package app;

import java.io.File;

import log.LogToGuiObserver;

import serverClient.GuiChangeObserver;
import serverClient.ConfigChangeObserver;

public interface AppInterface {

	public void addGuiChangeObserver(GuiChangeObserver gco);
	public void addConfigChangeObserver(ConfigChangeObserver cco);
	public void addLogToGuiObserver(LogToGuiObserver ltgo);
	public void initObservers();

	public String getSkinType();
	public void setSkinType(String skinType);
	public String getGuiType();
	public void setGuiType(String guiType);
	public boolean getVisibleGui();
	public void setVisibleGui(boolean visibleGui);
	public String getLocalIp();
	public String getNextLocalIP(String previousIP);
	public String getLastConectionIP();
	public void setLastConectionIP(String lastConectionIP);
	public String getLastSyncDoneMsg();
	public void setLastSyncDoneMsg(String lastSyncDoneMsg);
	public String getIPAddress();
	public void setIPAddress(String ipadd);
	public File getDirectory();
	public void setDirectory(File directory);
	public File getSecondDir();
	public void setSecondDir(File secondDir);
	public boolean getLocalSync();
	public void setLocalSync(boolean localSync);
	public boolean getStartListen();
	public void setStartListen(boolean startListen); 
	public void startSync();
	public void cancel();

	public String getSyncMode();
	public void setSyncMode(String syncMode);
	public int getSendPort();
	public void setSendPort(int sendPort);
	public int getListenPort();
	public void setListenPort(int listenPort);
	public boolean getAutoSync();
	public void setAutoSync(boolean autoSync);
	public int getAutoSyncDelay();
	public void setAutoSyncDelay(int delayInSec);
	public boolean getAllowDelete();
	public void setAllowDelete(boolean allowDelete);
	public boolean getDeleteWarning();
	public void setDeleteWarning(boolean deleteWarning);
	public boolean getIncludeHidden();
	public void setIncludeHidden(boolean includeHidden);
	public boolean getUseExactTime();
	public void setUseExactTime(boolean useExactTime);
	public boolean getSaveLog();
	public void setSaveLog(boolean saveLog);

	public void saveConfig();

	public boolean getFirstStart();

	public void openLogFileForReading();
	public void closeLogFileReadingPart();
	public String getLogLine();
	public void clearLog();

	public void removeOldRemoteFileLists();
	public boolean doesOldRemoteFileListsExist();
}
